Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Some ubiquitous computing (“ubicomp”) devices utilize batteries as an energy source. As ubicomp devices become more pervasive, the demand for computational power in the ubicomp devices may increase, thereby also increasing energy consumption by the ubicomp devices. The corresponding energy consumption by ubicomp device resulting from the increased demand for computational power is projected by some to outpace the growth of energy capacity in batteries. As a result, efficient energy utilization may become increasingly important for ubicomp devices and other devices that have increasing energy demands but operate under energy constraints.
A source of energy inefficiency in modern computing devices may result from the allocation of wide data storage in computer programs where only a portion of the allocated data storage is utilized to store data items. For example, when a programmer creates an array within a program, the programmer may declare each element within the array as a “long” (i.e., a 32 bit integer) or a “long long” (i.e., a 64 bit integer) data type. In some cases, the programmer may be aware that, when the program is run, values of the elements will likely be smaller integers utilizing less than the allocated 32 or 64 bits. However, the programmer may create the excess data storage for fear of causing an integer overflow, such as when input of the program changes and/or when the program code is reused for other applications. The excess data storage that is allocated but not utilized by a processor may take up valuable space in memory and/or incur significant energy overhead.